In the field of computer science, “distributed computing” generally refers to the co-ordinated use of physically distributed computing devices. The term “computing device” refers to any one of a wide range of devices having memory and a processor capable of executing instructions, such as a personal computer (PC), server, workstation, laptop computer, tablet computer, personal digital assistant (PDA), or wireless computing device for example. A system in which distributed computing occurs is referred to as a “distributed system”, and the software which is executed by such a system is referred to as “distributed software.” Distributed software may consist of multiple software components (e.g. distinct computer programs) which are intended for execution on multiple computing devices (possibly of different types) that intercommunicate, e.g. by way of a network. Distributed software may be used to solve a wide variety of computational tasks.
The World Wide Web is one example of a distributed system. When a person browses the World Wide Web using a Web browser application on an Internet-connected computer, that person is actually using a distributed system which includes the Internet-connected computer (for displaying Web page content), one or more Web servers (for hosting Web site content), and, in many cases, a proxy server (which may serve as a temporary repository for recently browsed Web pages). As the user browses from Web site to Web site, the computer executing the Web browser software communicates over the Internet via a system of routers (which may also be considered to be part of the distributed system) with Web server and/or proxy server software executing at remote computing devices, using the HyperText Transfer Protocol (HTTP) and Transmission Control Protocol/Internet Protocol (TCP/IP) protocols for example. The Internet-connected computer, Web server and proxy server may each be a different type of computing device. For example, the Internet-connected computer may be an iMac® G5 computer with a PowerPC™ G5 processor executing the Mac® OS X Tiger operating system, the Web server may be a Sun Fire™ V20Z Server with an AMD Opteron™ 200 processor executing the Sun Solaris 9 operating system, and the proxy server may be a Cisco® CE-510 Content Engine having an Intel® Pentium™ 4 processor.
Depending upon the type of computing devices which comprise a distributed system, a developer or team of developers that is tasked with developing or maintaining distributed software for that system may require training in a wide range of programming languages and computing device platforms. Each developer may further require training in respect of the communications scheme to be employed to facilitate communication between distributed system components. Such training is often time-consuming and costly.